/*
https://www.luogu.com.cn/problem/P1102
做法：
•读入数据，然后对数据进行排序。
•对于每个数字a[i]，找b=a[i]+C 首次和最后出现的位置x 和y
•计算y-x+1，累加进答案ans中
*/
#include <bits/stdc++.h>
int a[200010], n, c;
long long ans = 0;
using namespace std;

int findx(int k) { // 找到第一次出现的位置
    int l = 1, r = n, ans = -1;
    while (l <= r) {
        int mid = (l + r) / 2;
        if (a[mid] == k) {  // 如果中间的数字等于要找的
            ans = mid;   // 记录答案位置
            r = mid - 1;   // 局限在左区间
        } else if (a[mid] > k) // 如果中间数字大于要找的
            r = mid - 1;   // 局限在左区间
        else        // 如果中间数字小于于要找的
            l = mid + 1;   // 局限在右区间
    }
    return ans;
}
int findy(int k) { // 找到最后一次出现的位置
    int l = 1, r = n, ans = -1;
    while (l <= r) {
        int mid = (l + r) / 2;
        if (a[mid] == k) {  // 如果中间的数字等于要找的
            ans = mid;   // 记录答案位置
            l = mid + 1;   // 局限在右区间
        } else if (a[mid] > k) // 如果中间数字大于要找的
            r = mid - 1;   // 局限在左区间
        else        // 如果中间数字小于要找的
            l = mid + 1;   // 局限在右区间
    }
    return ans;
}
int main() {
    cin >> n >> c;
    for(int i = 1; i <= n; i++)
        cin >> a[i];
    sort(a + 1, a + n + 1);
    for(int i = 1; i <= n; i++) {
        int x = findx(a[i] + c);
        int y = findy(a[i] + c);
        if(x == -1) continue;
        ans += y - x + 1; 
    }
    cout << ans; // 输出答案
}
/*
g++ binary_search/bin_3.cpp && echo "4 1 1 1 2 3" | ./a.out
*/